2012-08-09 125 views
0

我有一個bash腳本,要求用戶輸入3個數字(例如123)。根據用戶輸入創建文件

我被困在如何分開這些數字以創建file1,file2,file3,我也必須確定它們是否是唯一的。

任何幫助,將不勝感激。

如果需要,我可以發佈我的bash腳本。

! /bin/bash 
clear 
echo -n "Enter three digits number: " 
read number 

echo $number | grep "^[0-9][0-9][0-9]$" 
if [ "$?" -eq 1 ] 
then 
    echo "Error!! Please enter only 3 numbers." 
    exit 1 
fi 

if [ -d ~/a2/numbers ] 
then 
    rm -r ~/a2/numbers 
fi 
mkdir ~/a2/numbers 

if [ ! -e ~/a2/products ] 
then 
    echo "Error the file \'products\'! does not exist" 
    exit 1 
fi 
echo ' ' 
cat ~/a2/products 

echo ' ' 
cut -f2 -d',' ~/a2/products > ~/a2/names 
cat ~/a2/names 

echo "I have $(cat ~/a2/names | wc -l) products in my product file" 
echo ' ' 
+1

總是發表任何你有的代碼。嘗試發佈最相關的部分,如果它很長。 – 2012-08-09 04:08:51

+2

我意識到,我發佈後,我應該有:(。我的壞。 – 2012-08-09 04:10:51

+0

@crashez在一個側面說明,bash可以做不帶'grep'的正則表達式:'if [[$ number =〜^ [0-9] {3} $]];然後...' – jordanm 2012-08-09 05:20:57

回答

2

您可以使用命令fold這將分割你的字符串。例如:

echo ${number} | fold -w1 

要檢查,如果他們是唯一隻使用if語句,因爲在你的情況,你只允許三個一數字。

0
#!/bin/bash 
read -p "enter 3 numbers: " nums 
if [[ $nums != [0-9][0-9][0-9] ]]; then 
    echo "digits only please" 
    exit 
fi 

read n1 n2 n3 < <(sed 's/./& /g' <<< $nums) 

if ((n1 == n2)) || ((n1 == n3)) || ((n2 == n3)); then 
    echo "no duplicate numbers" 
    exit 
fi 
相關問題