[英]Bash variable assignment
我有一個基本腳本來編輯 ~/.config 中的配置文件 - 它適用於cd
行,但這似乎是多余的:
dir=$HOME/.config/$1
if [ ! -d "$dir" ]; then :
else
cd "$dir" &&
for file in * ; do
case "$file" in
conf | config | *.cfg | *rc) $EDITOR "$file" ;;
*) : ;;
esac
done
cd - 1>/dev/null;
fi
將其更改為使用變量"$dir"
失敗。 我究竟做錯了什么?
dir=$HOME/.config/$1
if [ ! -d "$dir" ]; then :
else
for file in "$dir" ; do
case "$file" in
conf | config | *.cfg | *rc) $EDITOR "$file" ;;
*) : ;;
esac
done;
fi
您不會在$dir
中查找文件,而只是列出$dir
本身。 試試$dir/*
。
您的第一個版本在目錄上做了一個*
,產生目錄中所有文件的列表。 您的第二個版本在列表中只有一個條目 --- 目錄本身,而不是其內容。
你不能只使用“$dir”,因為它只給出了一個項目:目錄。 您需要 $dir/*,但這也包括路徑,因此您必須將其剝離以僅比較文件名:
...
for file in $dir/*; do
filename=`basename $file`
case $filename in
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.