我在Linux中對shell腳本有疑問。 我一直試圖讓這段代碼工作幾個小時,而且它做了一些我不明白的事情。代碼的目的是在csv文件中爲用戶添加名稱,gecos和組的值。 CSV文件的格式如下:Linux scipt變量無法正確識別
U12341;Mario Speedwagon;docent
U12342;Petey Cruiser;classA
這是我的代碼,我刪除了論壇功能useradd的暫時性的,因爲它是更容易調試的方式。它一直告訴我,這個組是一個無效的名字。所以我試着把變量放在屏幕上,並注意到了一些很奇怪的東西。
for actie in `more +2 users.csv | tr " " "_"`
do
login=`echo $actie | tr ";" ":" | cut --delimiter=: --field=1 | tr '[A-Z]' '[a-$
groep=`echo $actie | tr ";" ":" | cut --delimiter=: --field=3`;
gecos=`echo $actie | tr ";" ":" | cut --delimiter=: --field=2 | tr "_" " "`;
echo "In login ($login), in gecos ($gecos) en in groep ($groep)"
sudo useradd $login -c "$gecos"
echo "User $login is toegevoegd onder de naam $gecos in groep $groep"
done
這是奇怪的輸出:
)n login (u12341), in gecos (Mario Speedwagon) en in groep (docent
useradd: user 'u12341' already exists
User u12341 is toegevoegd onder de naam Mario Speedwagon in groep docent
)n login (u12342), in gecos (Petey Cruiser) en in groep (classA
useradd: user 'u12342' already exists
似乎在字符串的第一個字符把字符$組後。我認爲我使用同一個變量作爲組名的問題完全一樣。
其他一切似乎都很好,如果我運行沒有組代碼的腳本,它會爲用戶添加正確的gecos數據。
有人遇到過這樣的問題嗎? 在此先感謝。
我試過你的例子\ r,那似乎確實是這個問題。我會看看我能否找到一種方法來刪除它(因爲它不在文本編輯器中顯示)。 編輯:我試着像你說的那樣複製文件,但問題仍然存在。 – 2013-04-10 22:49:37
無論哪種方式,我不認爲我被允許更改csv文件。 – 2013-04-10 23:09:43
您可以在獲取'groep'變量的管道末端使用'tr -d'\ r''。 – iamnotmaynard 2013-04-10 23:11:29