如何向bash传递参数?

3

我正在编写一个Bash脚本,用于解密文件。我希望命令的语法为decrypt [file.jpg]。以下是我的脚本:

openssl enc -d -aes-256-cbc -in file.jpg > file
 echo "Please make sure you add the correct extension to 
the file."

花费了很多时间尝试实现我的目标,但它并不起作用,所以我想要一些帮助。例如,假设文件名为movie.mov,我应该能够使用decrypt movie.mov或任何其他文件对其进行解密。

编辑: 感谢所有的回答,但我发现我认可的答案是简单的,并且很抱歉我不能认可多个答案,所有的答案都给出了一些新信息!


http://www.tldp.org/LDP/Bash-Beginners-Guide/html/ - hetepeperfan
4个回答

4

在bash脚本中,参数通过$1表示第一个参数,$2表示第二个参数,以此类推...

因此,您的脚本应该如下所示:

openssl enc -d -aes-256-cbc -in $1 > file

请点击此处查看相关信息:See here

3
你可以使用变量$1、$2和$3在bash脚本中访问参数。$1是第一个参数,$2是第二个参数...
如果你运行
decrypt file.jpg

您可以使用以下代码在bash脚本中访问file.jpg
openssl enc -d -aes-256-cbc -in $1 > file
echo "Please make sure you add the correct extension to the file."

1

我如何将参数传递给bash?
(我想您是指“...给bash脚本?”)
只需在命令名称后添加参数即可。
然后,在您的脚本中,您可以使用$1获取第一个参数,$2获取第二个参数,依此类推。
请参见此处:https://www.gnu.org/software/bash/manual/html_node/Positional-Parameters.html#Positional-Parameters

为解决您的问题,您可以执行以下操作:
创建一个名为'./decrypt'的文件,其中包含以下内容:
#!/bin/bash openssl enc -d -aes-256-cbc -in "$1"
将该文件赋予执行权限:
chmod +x ./decrypt
然后,为了解密文件movie.mov,请执行以下命令:
./decrypt movie.mov > movie.mov.decrypted
重要提示:请注意,执行以下命令:decrypt movie.mov > movie.mov会导致文件为空!请参考此处:bash redirect input from file back into same file
您还可以将新脚本添加到路径中,参见此处:Add a bash script to path

0

$1 将是您传递给脚本的第一个参数,$2 是第二个参数,以此类推。 以下是一个示例,它将获取 $1 - 第一个参数,并将其传递给脚本内名为 decrypt_my_file 的函数。该函数还使用 $1 作为传递给它的第一个参数,就像在您的脚本中嵌套了一个小脚本。

   #!/bin/bash

    decrypt_my_file () {
      local file_that_was_given="${1}"

      openssl enc -d -aes-256-cbc -in "$file_that_was_given" \
            > decrypted."$file_that_was_given"
    }

    decrypt_my_file "$1"

这样应该可以解密您的文件名,例如ABC.jpg,并创建一个名为"decrypted.ABC.jpg"的解密文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接