bash 将命令存储在变量中

bash 将命令存储在变量中

嘿,我是 Bash 新手,出于某种原因,我无法将输出存储到变量中

#!/bin/bash
file="~/cs/cs3776/assignment2/passwd1.txt"
while read p; do

        echo "$p" | cut -d: -f1





done < passwd1.txt

将回声改为

$a=$(echo "$p" | cut -d: -f1)
echo "$a"

似乎不起作用

答案1

这里有两个问题。你看到的一个问题是,你在要分配的变量上使用了一个美元符号——美元符号用于得到变量的值,而不是设置它。因此,使用a=$(echo "$p" | cut -d: -f1)而不是$a=$(echo "$p" | cut -d: -f1)

第二个问题出现在赋值中file="~/cs/cs3776/assignment2/passwd1.txt"——~需要将 展开为主目录的路径,但当它在双引号中时,这种展开不会发生。在这种情况下,没有其他需要展开的内容,因此只需省略引号 ( file=~/cs/cs3776/assignment2/passwd1.txt) 即可。如果字符串的其余部分需要引号,则可以部分引用字符串 ( file=~/"cs/cs3776/assignment2/passwd1.txt")。

相关内容