当前位置: 首页 > 工具软件 > x-wrt > 使用案例 >

x-wrt webif2 shell脚本相关知识小结

柳宪
2023-12-01

1.\$PATH

如 export  \$PATH

执行结果是export $PATH

'\' 作为转义字符。用于获得语句本身,而非语句执行结果。


2. cat 和EOF

cat 查看文件中的所有内容。EOF,End Of File,文件标示符。

cat <<EOF>> a.txt

ls

ls -l

export  \$PATH

EOF

执行结果:

新建或追加a.txt,内容为

ls

ls -l

export  $PATH

可见,cat和EOF连用,可以输入语句到文件中。

cat <<EOF

ls

ls -l

export  $PATH

EOF

结果是在终端中显示:

ls

ls -l

export  /bin:/sbin:/usr/bin:/usr/sbin


3.%%

%在批处理


4, ${1:-}

$1是函数的第一个参数;

替换的定义,${varname:-word},如果varname存在且非null,则返回其值;否则,返回word。用途:如果变量未定义,则返回默认值。

${1:-}的意思就是说,如果函数有第一个参数,就返回这个参数,如果没有,就返回空。


${varname:+word}

当$varname已经设置时进行替换为word,否则,没有设置或为空,不进行替换。

又如 export ${NO_EXPORT:+-n}

如果NO_EXPORT定义了,则使用export -n

如果NO_EXPORT没定义,则使用export




5.$* $@ $# 

运行test.sh 1 2 3后
$*为"1 2 3"(一起被引号包住)
$@为"1" "2" "3"(分别被包住)
$#为3(参数数量)

$? 上一条命令的Exit Status
$$ 当前Shell的进程号


6,

[ -d DIR ] 如果DIR存在并且是一个目录则为真
[ -f FILE ] 如果FILE存在且是一个普通文件则为真
[ -z STRING ] 如果STRING的长度为零则为真
[ -n STRING ] 如果STRING的长度非零则为真
[ STRING1 = STRING2 ] 如果两个字符串相同则为真
[ STRING1 != STRING2 ] 如果字符串不相同则为真
[ ARG1 OP ARG2 ] ARG1ARG2应该是整数或者取值为整数的变量,OP-eq(等于)-ne(不等于)-lt(小于)-le(小于等于)-gt(大于)-ge(大于等于)之中的一个

-s file         true if the file has nonzero size
判断文件的大小是否非0. 如果文件存在并且大小非0,则返回true


7. CSS中#与.区别

.name 用来新建样式,并定义该样式。以后这种样式都可以通过class=“name”的形式在html标签中多处使用了。

#name 定义id为name的样式。该样式只能通过id=“name”的形式被使用。

# 针对于广泛用途,网页框架。#name ,name只能在网页中出现一次。

. 针对于具体网页细节。 .name,name可以在网页中出现多次。

 

8. css中 * 什么意思

<div class=nav>//.nav {...}
  <div></div>//.nav *{...}
  <div></div>//.nav *{...}
  <a></a>//.nav *{...}
</div>
.nav {...}只对最外层div管用
.nav *{...}对div内部的所有控件管用


9.html上标<sup></sup>与下标注<sub></sub>标签元素

<b>webif&sup2</b>

也可以写成

<b>webif<sup>2</sup></b>


10. ls  /tmp/.webif/config-* 2>&-

执行ls  /tmp/.webif/config-*,将stderr错误输出关闭。

>&n 使用系统调用 dup (2) 复制文件描述符 n 并把结果用作标准输出;
<&n 标准输入复制自文件描述符 n;
<&- 关闭标准输入(键盘);
>&- 关闭标准输出;
n<&- 表示将 n 号输入关闭;
n>&- 表示将 n 号输出关闭;
exec 0<&- # 关闭 FD0。
exec 1>&- # 关闭 FD1。
exec 5>&- # 关闭 FD5
cmd > file 把 stdout 重定向到 file 文件中;
cmd >> file 把 stdout 重定向到 file 文件中(追加);
cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中;
cmd << delimiter Here document,从 stdin 中读入,直至遇到 delimiter 分界符。
cmd < file >file2 cmd 命令以 file 文件作为 stdin,以 file2 文件作为 stdout;
cmd 2> file 把 stderr 重定向到 file 文件中;
cat <>file 以读写的方式打开 file;
cmd < file cmd 命令以 file 文件作为 stdin;

11. date +%T 获得当前的时间

 date  +"%Y%m%d" -d  "+n days"         今天的后n天日期  
 date  +"%Y%m%d" -d  "-n days"          今天的前n天日期

12.

&&的优先级高于||,故有&&和||同时存在的情况下,先执行&&部分;

13.awk -f program_file

program_file作为awk程序执行的代码源,代替从第一个命令行参数中获取。

awk -v var -f programe_file

-v定义的变量var 可以在awk的命令中使用,即可以在program_file 中继续使用var变量。


14. &amp

为了在html网页中显示‘&’。因为&在html语言中会用来显示特殊符号,这样的话,如何在网页中正确显示&,这个就是&amp完成的功能了。比如,&nbsp在html中显示空格,如果要在html中显示'&nbsp'这些字符串时,可以在html中添加'&amp;nbsp'


15.\

\是转义符,表示符号或命令使用本身的含义。比如rm 是rm -i 的别名。如果直接使用,会提示是否删除。可以使用\rm,这样就可以使用rm命令本身了。网上是这么说的。



 类似资料: