shell使用心得
foo="cmd"
$cmd &> /dev/null
$($cmd &> /dev/null)
if [[ $($cmd &> /dev/null) -eq 0 ]]; then echo running; fi
if [[ $($cmd &> /dev/null) -ne 0 ]]; then echo "not found" && exit; fi
- 把命令cmd内容赋值到foo,此时不会执行该命令;
- 接着拼接加工该命令并执行,使得不打印info error信息。
- $(cmd)的方式是支持嵌套 http://ddrv.cn/a/665463 ,并且可以实现封装,否则在if下会认为拆分成不是一个命令
- 判断$($cmd &> /dev/null)执行结果是否等于0(执行成功);if [[]] 两层中括号建议使用,一层容易出问题。
- exit是退出脚本
[ num1 -eq num2 ] num1 和 num2 两数相等为真 , =
[ num1 -ne num2 ] num1 和 num2 两数不等为真 ,!=
[ num1 -gt num2 ] num1 大于 num1 为真 , >
[ num1 -ge num2 ] num1 大于等于num2 为真, >=
[ num1 -lt num2 ] num1 小于n um2 为真 , <
[ num1 -le num2 ] num1 小于等于 num2 为真, <=
整数值判断参考
foo=`$cmd`
if [[ $cmd =~ "c" ]]; then echo "has c"; fi
if [[ ${testmystring} != *"c0"* ]]; then echo "not has c0"; fi
- 执行cmd,并把输出保存的bar
- 判断cmd结果是否包含c字符
- 判断testmystring是否 “不”包含c0,建议包含也用这种格式,参考:https://stackoverflow.com/questions/30557508/bash-checking-if-string-does-not-contain-other-string
ret=`$cmd`
if [[ $? -ne 0 ]]; then echo "not success"; fi
执行cmd,保存输出到ret,再判断cmd是否执行成功
echo -ne "\t"
do something | tr -d "\n" >> file
- 打印tab并且不换行(粘贴到excel可以分列)
- 重定向不换行,参考:https://unix.stackexchange.com/questions/492071/how-can-i-remove-a-newline-from-redirected-output#:~:text=If you're asking more generally how to suppress,of using echo altogether in favor of printf%3A
str=""
str1="default"
str2=$([ -z "$str" ] && echo "$str1" || echo "$str")
echo $str2 # default
三元运算