Linux操作符问题

函数退出 #

函数退出状态:0(成功),非零(非正常,失败)

引号 #

双引号中使用转义字符可以防止展开
这意味着单词分割(空格制表换行分割单词)、路径名展开(*星号)、波浪线展开和花括号展开都将失效,然而参数展开算术展开命令替换仍然执行

echo "text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER" #禁止部分
text ~/*.txt {a,b} foo 4 me
echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER' #全部禁止
text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER

各种操作符 #

[ expression ] / test[[ expression ]]$(( expression ))$var$( termi )
文件表达式 -e file,字符串表达式 -n string,整数表达式 integer1 -eq integer2test增强,增加 [ str =~ regex ],增加 ==
[[ $FILE == foo.* ]]
整数加减乘除取余取变量执行命令/函数
termi取变量$必加,里面被看作命令参数,< > ( ) 必须转义 否则 小于号 < 大于号>被认为重定向与[ ] 一致取变量$可加可不加termi取变量$必加

image-20230920195057911

if [ -x "$FILE" ]  #引号可以防止空参数,空值。而""被解释成空字符串