我有这些 if 条件,但它有编译错误。我该如何解决?
if [ $DEVICE_ID == "" ]; then
我得到错误:
line 63: [: ==: unary operator expected
if [ 'ls -l Mytest*.log | wc -l' -eq 1 ]; then
我得到错误:
line 68: [: ls -l Kernel*.log | wc -l: integer expression expected
我有这些 if 条件,但它有编译错误。我该如何解决?
if [ $DEVICE_ID == "" ]; then
我得到错误:
line 63: [: ==: unary operator expected
if [ 'ls -l Mytest*.log | wc -l' -eq 1 ]; then
我得到错误:
line 68: [: ls -l Kernel*.log | wc -l: integer expression expected
引用变量:
if [ "$DEVICE_ID" == "" ]; then
但最好这样做:
if [ -z "$DEVICE_ID" ];
第二个错误是您需要使用反引号:
if [ $(ls -l Mytest*.log | wc -l) -eq 1 ]; then
如果您使用 bash,请在条件表达式中使用双括号:它们对不带引号的变量更智能
if [[ $DEVICE_ID = "" ]]; then ...
会工作(注意:=
而不是==
普通字符串相等而不是模式匹配)
对于文件的存在,使用数组
shopt -s nullglob
files=( *.log )
if (( ${#files[@]} > 0 )); the. Echo "there are log files"; fi