【问题标题】:Create files based on user input根据用户输入创建文件
【发布时间】:2012-09-26 05:51:35
【问题描述】:

我有一个 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 ' '

【问题讨论】:

  • 始终发布您拥有的任何代码。如果文章很长,请尝试发布最相关的部分。
  • 我发帖后意识到我应该有:(。我的错。
  • @crashez 在旁注中,bash 可以在没有grep 的情况下执行正则表达式:if [[ $number =~ ^[0-9]{3}$ ]]; then ...

标签: linux bash


【解决方案1】:

你可以使用命令fold 来分割你的字符串。示例:

echo ${number} | fold -w1

要检查它们是否唯一,只需使用 if 语句,因为在您的情况下,您只允许三个一位数字。

【讨论】:

    【解决方案2】:
    #!/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
    

    【讨论】:

      猜你喜欢
      • 2022-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-12
      • 2021-08-30
      • 1970-01-01
      • 2015-08-14
      相关资源
      最近更新 更多