如何通过;索取文本“;输入到";运行Shell脚本";

如何通过;索取文本“;输入到";运行Shell脚本";,shell,automator,Shell,Automator,我的自动机有两个盒子: 1) 索要文本 2) Shell脚本 我不知道如何将(1)到(2)的内容传递。 该工作流旨在接收文件并使用输入的文本对其进行重命名。 因此: 这就是我在编程方面的零知识所能做到的:)有两种方法可以将用户输入传递给shell脚本: a) 通读命令 b) 通过命令行参数 例如: read text_entered #will seek user input for entering the text 或 sh script.sh 此处指的是给定给脚本的第一个参数,它可能是传

我的自动机有两个盒子:

1) 索要文本 2) Shell脚本

我不知道如何将(1)到(2)的内容传递。 该工作流旨在接收文件并使用输入的文本对其进行重命名。 因此:


这就是我在编程方面的零知识所能做到的:)

有两种方法可以将用户输入传递给shell脚本:

a) 通读命令 b) 通过命令行参数

例如:

read text_entered #will seek user input for entering the text

sh script.sh
此处
指的是给定给脚本的第一个参数,它可能是传递给脚本以供执行期间使用的文本输入(作为脚本中的变量$1)

在script.sh文件中,将$1传递给text_输入的变量

例如:

text_entered=$1
如果要输入的文本顺序与$@中的参数列表匹配,则您也可以将文本放入一个prenamed文件(比如text.txt)中,并在for循环过程中读取相同的文本,如下所示:

counter=1
for f in "$@"
do
    text_entered=`sed $counter'!d' texts.txt`
    path/to/my/command $f text_entered
    counter=`expr $counter + 1`
done

谢谢如果输入的文本_为$1,“工作流接收文件/文件夹”的输入是什么。我知道按照传递的顺序,第一个“输入”是1美元,第二个(文本)是2美元。另外,如果它是一个循环,并且我使用$1$2,我不能使用$@,因此我只能传递一个变量。您需要更好地指定问题陈述,但我已尝试理解您的问题,并添加了另一种可能性场景。看看这是否有帮助
counter=1
for f in "$@"
do
    text_entered=`sed $counter'!d' texts.txt`
    path/to/my/command $f text_entered
    counter=`expr $counter + 1`
done