我需要将命令的输出分配给变量。我尝试的命令是:
grep UUID fstab | awk '/ext4/ {print $1}' | awk '{print substr($0,6)}'
我尝试用这段代码来分配一个变量:
UUID=$(grep UUID fstab | awk '/ext4/ {print $1}' | awk '{print substr($0,6)}')
但是,它给出了语法错误。另外我希望它能在 bash 脚本中工作。
错误是:
./upload.sh: line 12: syntax error near unexpected token ENE=$( grep UUID fstab | awk '/ext4/ {print $1}' | awk '{print substr($0,6)}'
)'
./upload.sh: line 12: ENE=$( grep UUID fstab | awk '/ext4/ {print $1}' | awk '{print substr($0,6)}'
)'
好吧,使用“$()”子 shell 运算符是获取 bash 命令输出的常见方法。由于它跨越子 shell,因此效率不高。
我试过 :
UUID=$(grep UUID /etc/fstab|awk '/ext4/ {print $1}'|awk '{print substr($0,6)}')
echo $UUID # writes e577b87e-2fec-893b-c237-6a14aeb5b390
它工作完美:)
EDIT:
当然你可以缩短你的命令:
# First step : Only one awk
UUID=$(grep UUID /etc/fstab|awk '/ext4/ {print substr($1,6)}')
再说一次:
# Second step : awk has a powerful regular expression engine ^^
UUID=$(cat /etc/fstab|awk '/UUID.*ext4/ {print substr($1,6)}')
您还可以将 awk 与文件参数一起使用::
# Third step : awk use fstab directlty
UUID=$(awk '/UUID.*ext4/ {print substr($1,6)}' /etc/fstab)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)