如何将参数传递给bash?

时间:2017-12-08 13:38:55

标签: bash macos

所以我正在写一个bash脚本,它将解密一个文件,所以我要解密的命令的语法[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或任何其他文件解密它。

编辑:感谢您的所有答案,但我发现我认可的答案很简单,很抱歉,我不能批准多个答案,所有答案都会提供一些新信息!

4 个答案:

答案 0 :(得分:2)

您可以使用变量$ 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 :(得分:2)

bash脚本的参数收到第一个arg为1美元,第二个为$ 2等等......

所以你的脚本应该是

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

See here

答案 2 :(得分: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

答案 3 :(得分: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"