我想寫一個腳本,需要一個字符串參數,將字符串分成字符並使用字符來創建目錄。例如:「./addUser asd」應該在腳本所在的目錄內創建一個名爲「a」的目錄,它還必須創建一個名爲「s」的目錄作爲「a」的子目錄。類似地,必須在目錄「s」內創建一個名爲「d」的目錄。分隔字符串,bash shell
我卡住了,你能幫忙嗎?
在此先感謝。
我想寫一個腳本,需要一個字符串參數,將字符串分成字符並使用字符來創建目錄。例如:「./addUser asd」應該在腳本所在的目錄內創建一個名爲「a」的目錄,它還必須創建一個名爲「s」的目錄作爲「a」的子目錄。類似地,必須在目錄「s」內創建一個名爲「d」的目錄。分隔字符串,bash shell
我卡住了,你能幫忙嗎?
在此先感謝。
一個與mkdir -p
可能的解決方案:
echo asd | sed 's:.:&/:g' | xargs -n1 -I % mkdir -p "%"
或照常消除無用回波:)和腳本格式
#/bin/bash
<<< "$1" sed 's:.:&/:g' | xargs -n1 -I % mkdir -p "%"
此可以用作
< filename sed 's:.:&/:g' | xargs -n1 -I % mkdir -p "%"
名稱是在文件filename
或
mkdir -p $(echo asd | sed 's:.:&/:g')
或
mkdir -p $(sed 's:.:&/:g' <<< "asd")
爲通常情況下,空格和某些特殊字符可能鬧事......
謝謝你,這工作正常。 但我也有類似的問題。現在我必須在目錄中創建一個文本文件,比如說「d」。子目錄。我怎樣才能做到這一點? – user2117336 2013-05-02 21:04:46
從https://stackoverflow.com/a/7579016/2313067,你可以使用像
x=$1
i=0
while [ $i -lt ${#x} ]; do mkdir ${x:$i:1}; cd ${x:$i:1}; i=$((i+1));done
想到的最簡單方法是使用正則表達式插入每對或字符之間/
與mkdir -p
,如:
mkdir -p $(echo abc | perl -pi -e 's!.(?=.)!$&/!g')
或與sed
:
mkdir -p $(echo abc | sed -e 's!.!&/!g')
我回答類似這樣的,前幾天的東西:
manupulating a string to create directories in unix
歸結爲
mkdir -p $(echo $1 | sed 's/[0-9a-zA-Z]/\0\//g')
或類似的東西
您的輸入使用while循環。
#!/bin/bash
INPUT="$1"
while read -n 1 CHAR
mkdir "$CHAR"
cd "$CHAR"
done <<<"$INPUT"
[manupulating字符串在UNIX創建目錄]的可能重複(http://stackoverflow.com/questions/16244046/manupulating-a-string-to-create-directories-in-unix) – Kevin 2013-05-02 20:29:18