【发布时间】:2017-02-06 02:30:20
【问题描述】:
我正在尝试编写一个简单的程序来检查给定的文件名是否引用了一个目录。但是当我运行 ./isdir.sh (这是脚本的名称)时,我不断收到错误消息说“错误的解释器:没有这样的文件或目录”。
这是我的代码:
#!bin/sh
if [[ $# -ne 1 ]];then
echo "Usage: $0 dir"
exit 1
fi
dir="$1"
dirname = "$1"
if [[ ! -d "$dir" ]]; then
echo "Error: directory $dir not found."
exit 2
fi
if [[ -d "$dirname" ]]; then
echo "$dirname is a directory."
exit 3
另外,重要的问题: 如何处理其中包含空格的输入值?
【问题讨论】:
-
第一行可能应该是
#!/bin/sh(缺少斜线),或者更好的是#!/bin/bash,因为[[ ]]构造只在Bash 中有效。 -
要添加到 @BenjaminW. 的有用评论:虽然它不会发现 shebang-line 问题(
#!bin/sh而不是#!/bin/sh),但将您的代码粘贴到 shellcheck.net 会揭示了[[问题等等。