我已经练习for
了流程控制,参考了一个示例脚本,例如;
if [ $(id -u) = "0" ]; then
dir_list="/home/*"
else
dir_list=$HOME
fi
for home_dir in $dir_list; do
以上部分引用了“流控制 - 第 3 部分” http://linuxcommand.org/lc3_wss0130.php
然后,为了检查变量中的通配符在for
流控制中的行为,我尝试了以下几行;
#!/bin/bash
binlist="~/bin/*"
for i in $binlist; do
echo $i
done
我希望扩展通配符并将所有文件~/bin/
显示为输出,但它没有发生。输出只是~/bin/*
.
如果我不使用该变量,而是直接分配~/bin/*
到 列表中for
,那么我期望会发生什么,其中的所有文件都会~/bin/
显示出来。
问题=====
如何启用变量中的通配符来扩展?
还是我误解了参考站点的示例代码的意图?
==============
感谢您阅读我的问题!
您可以将 bash 变量用于主目录,而不是
~
.您的主目录的 bash 变量是这样的,
$HOME
因此您的脚本应如下所示:或者,您可以使用
/home/$USER
而不是$HOME
这样:您可以通过运行以下命令查看这些变量中的每一个:
这些列在 bash 手册页的“Shell 变量”下。
此外,正如@John1024 所提到的
$HOME
,如果将波浪号放在引号内,它不会扩展为,因此您的第三个选择是使用以下内容:正如@bac0n 所提到的,这里不需要引号,因此您也可以使用以下内容: