接受论证和条件Bash

时间:2018-04-22 10:22:54

标签: linux bash shell

我正在尝试创建一个带有单个命令行参数的脚本。然后它查看参数,如果它是一个目录名,它只打印该目录存在。如果是文件名,则打印出文件存在。否则,它会尝试使用此名称创建一个目录,并测试它是否成功并在标准输出上报告此内容。

我的代码是:

while read argument; do
     if [ $argument -d ]; then
        echo "Directory exists"
     elif [ $argument -e ]
        echo "File exists"
     else
        mkdir $argument
        if [ $argument -d]; then
           echo "Directory was created"
        else
           echo "Error while creating the directory"
        fi
     fi
done

然后我运行代码./file_name.sh argument。如果我运行这样的代码,我在第8行得到一个错误,这只是“其他”。虽然这里可能没有必要,但它是第一个如何从命令行接受我想到的参数的选项。

2 个答案:

答案 0 :(得分:0)

正如您所提到的,您需要单个命令行参数,因此无需循环

#!/bin/bash
if [[ -z "$1" ]]; then 
  echo "Help : You have to pass one argument" 
  exit 0 
fi  
if [[ -d "$1" ]]; then 
    echo "Directory exists"
elif [[ -f "$1" ]]; then 
    echo "File exists"
else
    mkdir "$1"
    if [ -d "$1" ]; then
       echo "Directory was created"
    else
       echo "Error while creating the directory"
    fi
fi

答案 1 :(得分:0)

if [ -d $1 ]; then
        echo "Directory exists"
elif [ -e $1 ]; then
        echo "File exists"
else
        mkdir $1
        if [ -d $1 ]; then
           echo "Directory was created"
        else
           echo "Error while creating the directory"
        fi
fi

由于提供的链接,我编写了这个解决方案,谢谢。