2013-05-02 137 views
1

我想寫一個腳本,需要一個字符串參數,將字符串分成字符並使用字符來創建目錄。例如:「./addUser asd」應該在腳本所在的目錄內創建一個名爲「a」的目錄,它還必須創建一個名爲「s」的目錄作爲「a」的子目錄。類似地,必須在目錄「s」內創建一個名爲「d」的目錄。分隔字符串,bash shell

我卡住了,你能幫忙嗎?

在此先感謝。

+0

[manupulating字符串在UNIX創建目錄]的可能重複(http://stackoverflow.com/questions/16244046/manupulating-a-string-to-create-directories-in-unix) – Kevin 2013-05-02 20:29:18

回答

0

一個與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") 

爲通常情況下,空格和某些特殊字符可能鬧事......

+0

謝謝你,這工作正常。 但我也有類似的問題。現在我必須在目錄中創建一個文本文件,比如說「d」。子目錄。我怎樣才能做到這一點? – user2117336 2013-05-02 21:04:46

1

想到的最簡單方法是使用正則表達式插入每對或字符之間/mkdir -p,如:

mkdir -p $(echo abc | perl -pi -e 's!.(?=.)!$&/!g') 

或與sed

mkdir -p $(echo abc | sed -e 's!.!&/!g') 
0

您的輸入使用while循環。

#!/bin/bash 
INPUT="$1" 
while read -n 1 CHAR 
    mkdir "$CHAR" 
    cd "$CHAR" 
done <<<"$INPUT"