有人能告诉我是否应该在shell脚本中包含变量的引号?
例如,以下是正确的:
xdg-open $URL
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)
要么
xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)
如果是这样,为什么?
有没有办法获得wc在bash中返回的整数?
基本上我想在文件名之后将行号和字数写入屏幕.
output: filename linecount wordcount
这是我到目前为止:
files=`ls`
for f in $files;
do
if [ ! -d $f ] #only print out information about files !directories
then
# some way of getting the wc integers into shell variables and then printing them
echo "$f $lines $ words"
fi
done
我试图使用 wc 仅获取文件中的单词数。wc -w file.txt给我加上文件名。我不想要文件名。所以,我看到这wc -w < file.txt有效。
我不明白这个命令是如何工作的。我什至无法在看到此命令的答案下方添加评论。
为什么在 的情况下不打印文件名wc -w < file.txt?
我正在尝试执行以下命令 - 但输出中引入了一些前导空格。
ls -lrt | wc -l
29
echo $SHELL
/bin/bash
Run Code Online (Sandbox Code Playgroud)
当我在另一台机器上运行相同的命令时,输出符合预期。
ls -lrt | wc -l
183
echo $SHELL
/bin/bash
Run Code Online (Sandbox Code Playgroud)
前导空格导致我的 perl 验证失败
unless ( $phCountRet->{COUNT} =~ /^\d+$/ ){
...
}
Run Code Online (Sandbox Code Playgroud)
我可以选择修剪前导空格然后进行验证,但这不会是一个干净的解决方案。
任何关于可能导致这种情况的指针都会有很大帮助。
标题说明了一切.我已经设法得到了这条线:
lines=$(wc file.txt | awk {'print $1'});
Run Code Online (Sandbox Code Playgroud)
但我可以使用辅助将其附加到文件名.奖励点用于向我展示如何在当前目录中的所有.txt文件上循环它.