一、
序号 参数 说明1 $a = $b 如果string1等于string2,则为真2 $string1 != $string2 如果string1不等于string2,则为真
二、
if [ -d "/path/to/directory" ]; then
:检查/path/to/directory
是否为目录。if [ -f "/path/to/file" ]; then
:检查/path/to/file
是否为普通文件。if [ -z "$my_string" ]; then
:检查$my_string
是否为空字符串
三、$在脚本中的作用?
举个例子:
$$
:当前 shell 的进程 ID。$0
:脚本的名称。$1
,$2
, ...:传递给脚本的参数。$#
:传递给脚本的参数个数。$*
:所有传递给脚本的参数作为一个字符串。$@
:所有传递给脚本的参数,每个参数作为一个单独的字符串。$?
:上一个命令的退出状态。
算术运算
可以使用 $(( ))
来进行数学计算。
变量引用
当 $
放在变量名前面时,表示引用该变量的值。
命令替换
当 $
与 ( )
或者 ````` 结合使用时,表示命令替换,即执行括号内的命令并将结果作为值。
四、awk -F '=' '{print $2}'
-
分隔字段:
awk -F '='
指定=
作为字段分隔符。
-
打印第二个字段:
{print $2}
打印每行的第二个字段。
五、 if [[ "$filename" =~ \.(bin|rbf|tar.gz)$ ]];
-
[[ ... ]]
:- 这是一个扩展的条件测试语法,提供了更多的功能和更好的可读性。
- 与
[ ... ]
不同,[[ ... ]]
不会进行单词拆分和文件名扩展,因此更安全。
-
=~
:-
这是正则表达式匹配操作符。
[[ ... =~ ... ]]
用于检查左边的字符串是否匹配右边的正则表达式。 -
[[ "$filename" =~ \.(bin|rbf|tar\.gz)$ ]]
使用正则表达式匹配文件名的扩展名。 -
相当于
[ "$filename" == *.bin ] || [ "$filename" == *.rbf ] || [ "$filename" == *.tar.gz ];
-
-
\.(bin|rbf|tar.gz)$
:- 这是一个正则表达式,用于匹配文件名的扩展名。
\.
匹配点号.
。(bin|rbf|tar.gz)
是一个括号表达式,表示匹配bin
、rbf
或tar.gz
中的任何一个。$
表示字符串的结尾,确保匹配的是文件名的最后一个部分。
-
grep -oE '^[^=]+=.*\.(bin|tar.gz)' "$PATH/test.ini" > copy.txt
-o
选项表示只输出匹配的部分,而不是整行。
-E
选项表示使用扩展正则表达式(Extended Regular Expressions)。这样可以使用更复杂的正则表达式语法。
^[^=]+=.*\.(bin|rbf|tar.gz)'
这是一个正则表达式,用于匹配特定模式的行。
^
:表示行的开始。[^=]+
:匹配一个或多个非等号=
的字符。这部分用于匹配等号前面的部分。=
:匹配等号=
。.*
:匹配任意数量的任意字符。这部分用于匹配等号后面的部分。\.(bin|rbf|tar.gz)
:匹配以.bin
、.rbf
或.tar.gz
结尾的字符串。\.
:匹配点号.
。(bin|rbf|tar.gz)
:匹配bin
、rbf
或tar.gz
。