我有 2 個目錄
testing_dir
testing_dir_win
所以我需要 cd 到testing_dir。但情況就是這樣
目錄可以是
testing_dir 或 testing_dir-2.1.0
testing_dir_win 或 testing_dir_win-1.3.0
我的腳本應該只使用testing_dir 或 testing_dir-2.1.0(基于哪個可用)
我有很長的路要寫:
str=`ls folder_name|grep ^testing_dir`
arr=(${str//" "/ })
ret=""
for i in "${arr[@]}"
do
if [[ $i != *"testing_dir_win"* ]] ; then
ret=$i
fi
done
但是這個問題有沒有一條線?類似的東西cd testing_dir[\-]?(順便說一句,這不起作用)。
uj5u.com熱心網友回復:
如果您的腳本包含
shopt -s extglob
您可以使用:
cd testing_dir?(-[[:digit:]]*) || exit
...如果您保證只有一個匹配項存在。
沒有那個保證,你可以直接設定
arr=( testing_dir?(-[[:digit:]]*) )
cd "${arr[0]}" || exit
uj5u.com熱心網友回復:
使用帶有 grep 過濾器的命令:
cd `ls | grep -w testing_dir`
此命令將匹配 testing_dir 目錄而無需擔心版本。
PS如果有很多版本,它將進入最早的版本,因此根據您的用例添加“head -1,tail -1”
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/425934.html
上一篇:修剪AWK中的多余空格
下一篇:如何拒絕bash中的字符?
