脚本适用于./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
答案 0 :(得分:2)
当您直接执行脚本时,将为解释器解析hashbang行。当您使用#!/bin/bash
时,bash shell将用于执行您的脚本,因此执行的命令为/bin/bash ./file_name
。
Bash为sh提供了命令的超集,因此您可以在bash中运行sh脚本,但反之亦然。例如,在你的情况下,sh的read
命令不知道bash知道的-a
参数。
使用bash file_name
调用您的脚本,一切都应该没问题。