gpt4 book ai didi

linux - 将命令的输出分配给变量(BASH)

转载 作者:IT王子 更新时间:2023-10-29 00:24:01 29 4
gpt4 key购买 nike

我需要将命令的输出分配给变量。我尝试的命令是:

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

它完美地工作:)

编辑:

当然你可以缩短你的命令:

# 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)

关于linux - 将命令的输出分配给变量(BASH),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11527899/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com