来自终端的参数的bash程序

时间:2015-10-28 01:31:06

标签: python bash

我正在尝试编写一个bash脚本来运行一个python程序,它在终端中获取文件名和打印值。我的bash程序应该从终端获取三个参数。首先是python程序名,第二个是文件夹名第三个文件名,我想存储我的python程序的输出。

#!/bin/bash
directoryname = "$1"
programname = "$2"
newfilename ="$3"
for file in directoryname
 do
  python3 programname "$file"  >> newfilename
 done

我执行的程序如下: ./myscript.sh mypython.py / home / data myfile.txt

但它给出了错误:

 ./myscript.sh: line 2: directoryname: command not found
 ./myscript.sh: line 3: programname: command not found
 ./myscript.sh: line 4: newfilename: command not found

请帮助我。对于bash脚本我是个新手。

2 个答案:

答案 0 :(得分:3)

更改为:

#!/bin/bash
directoryname="$1"
programname="$2"
newfilename="$3"
for file in $directoryname
do
      python3 "$programname" "$file"  >> "$newfilename"
done

=周围没有空格。 var在其名称前面用$标记。一般来说,如果引用var扩展更好($ var vs“$ var”)。

而且,我假设您确实需要目录中的文件列表,但目录名只是目录本身(作为/ home / user /)。如果是这样,您将需要:

for file in "$directoryname"/*

答案 1 :(得分:0)

=与变量名称和值之间的不必要空格导致问题,删除空格并重试。将工作。 :)

#!/bin/bash
directoryname="$1"
programname="$2"
newfilename="$3"
for file in directoryname
 do
  python3 programname "$file"  >> newfilename
 done