python - 带有来自终端的参数的 bash 程序

标签 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 脚本还很陌生。

最佳答案

更改为:

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

= 周围没有空格。 var 在其名称前用 $ 标记。一般来说,如果带引号,var 扩展会更好($var 与 "$var")。

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

for file in "$directoryname"/*

关于python - 带有来自终端的参数的 bash 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33381405/

相关文章:

python - __str__ 输出 "instance at 0x00E4F558"

python - 迭代使用 selenium 获得的网络元素

python - Flask 安全文本渲染用户生成的 block

python - 如何优化python中矩阵的数学运算

bash - ipython 语法颜色

linux - 在 unix 中将多行、带引号的字符串作为单个命令行参数传递?

linux - 使用特定前缀删除队列的脚本

git - 批量更改各种存储库中的git remote origin - bash命令

python - 有没有python模块,可以把地理坐标转成对应城市的名字?

c - 在shell中运行C程序时将相对路径扩展为完整路径