我有一个文件,其中的值以 ABC 或 ABD 开头。
从输入文件中获取值后如何检查它以 ABC 还是 ABD 开头?
例如:
value=$(cat file | awk 'NF{print;exit}' | awk '{print $1}')
Run Code Online (Sandbox Code Playgroud)
现在我想检查这个 $value 是否以 ABC 或 ABD 开头。如何?
case要检查 shell 变量是否以 ABC 或 ABD 开头,一种传统(且非常便携)的方法是使用 case 语句:
case "$value" in
AB[CD]*) echo yes;;
*) echo no;;
esac
Run Code Online (Sandbox Code Playgroud)
因为这不需要外部进程,所以应该很快。
[或者,可以使用测试命令:
if [ "${value#AB[CD]}" != "$value" ]
then
echo yes
else
echo no
fi
Run Code Online (Sandbox Code Playgroud)
这也很便携。
[[最后,可以使用更现代且便携性更低的测试命令:
if [[ $value == AB[CD]* ]]
then
echo yes
else
echo no
fi
Run Code Online (Sandbox Code Playgroud)
读取文件的第一个非空行并测试它的第一个字段是否以 ABC 或 ABD 开头:
awk 'NF{if ($1~/^AB[CD]/) print "yes"; else print "no";exit}' file
Run Code Online (Sandbox Code Playgroud)