嘿,我是 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"
)。