这个“-n”是什么意思?

这个“-n”是什么意思?

请看一下这个代码示例:

MIN=10

if [ -n "$1" ]; then echo "$1"; fi
if [ -n "$2" ]; then echo "$2"; fi 
if [ -n "$3" ]; then echo "$3"; fi
if [ -n "$4" ]; then echo "$4"; fi
if [ -n "$5" ]; then echo "$5"; fi
if [ -n "$6" ]; then echo "$6"; fi
if [ -n "$7" ]; then echo "$7"; fi
if [ -n "$8" ]; then echo "$8"; fi
if [ -n "$9" ]; then echo "$9"; fi
if [ -n "${10}" ]; then echo "${10}"; fi

echo "List of arguments: "$*"" 
echo "Name of this script: "$0""
if [ $# -lt "$MIN" ]; then echo "Not enough arguments, need $MIN to run."; fi

例如,终端输出$./new.sh q w e r t y u i o p将是:

q
w
e
r
t
y
u
i
o
p
List of arguments: q w e r t y u i o p
Name of this script: ./new.sh

的输出$./new.sh q w e r t y u i o将是:

q
w
e
r
t
y
u
i
o
List of arguments: q w e r t y u i o
Name of this script: ./new.sh
Not enough arguments, need 10 to run.

问题: 是什么-n意思?

答案1

[是内置函数的另一个名称test,请参阅这里这里, 还

该语句序列if作为循环可能会更好。在 Bash 中我们可以使用间接扩展:

for ((i=1 ; i <= 10 ; i++)) ; do 
    if [ -n "${!i}" ] ; then 
        echo "${!i}"
    fi
done

更常见的习惯用法可能是shift在每次迭代中使用,但它会破坏参数列表。

另外,引用:这里$0在引号之外。在大多数情况下,将所有变量扩展保留在引号内更有用,除非您明确想要分词和文件名扩展。

echo "Name of this script: "$0""

所以,不如写:

echo "Name of this script: $0"

相关内容