脚本与./file_name一起使用,但是当我使用sh file_name启动它时会出错

时间:2015-05-07 07:30:05

标签: linux bash scripting

脚本适用于./file_name,但是当我使用sh file_name启动它时会出错

#!/bin/bash
echo "Scenarijus, kuris is teksto failo paima pirmoje eiluteje esancius zodzius ir sukuria naujus katalogus tokiais paciais pavadinimais, jusu pasirinktame kataloge"
echo " Scenarijus sukurtas: Tomas Vilemaitis "
echo "  "
echo "Iveskite teksto faila is kurio norite paimti pirma eilute"
read failas
echo "Nurodykite kataloga kuriame noresite sukurti naujus katalogus"
read direktorija
mkdir -p $direktorija
read -a pavadinimai < "$failas"
for pavadinimas in "${pavadinimai[@]}"; do
    mkdir "$direktorija/$pavadinimas"
done

当我使用sh启动脚本时出现错误: file_name: 9: Illegal option -a filename: 10: filename: Bad substitution

1 个答案:

答案 0 :(得分:2)

当您直接执行脚本时,将为解释器解析hashbang行。当您使用#!/bin/bash时,bash shell将用于执行您的脚本,因此执行的命令为/bin/bash ./file_name

Bash为sh提供了命令的超集,因此您可以在bash中运行sh脚本,但反之亦然。例如,在你的情况下,sh的read命令不知道bash知道的-a参数。

使用bash file_name调用您的脚本,一切都应该没问题。