如何向 bash 传递参数?

问题描述 投票:0回答:4

所以我正在编写一个 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 我应该能够使用解密 movie.mov 或任何其他文件来解密它。

bash macos
4个回答
5
投票

接收 bash 脚本上的参数,第一个参数为 $1,第二个参数为 $2,等等...

所以你的脚本应该是这样的

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

看这里


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 将文件中的输入重定向回同一文件
您可能还想将新脚本添加到路径,请参阅此处:将 bash 脚本添加到路径


0
投票

$1 将是您传递给脚本的第一个参数,$2 是第二个,依此类推。 下面的示例采用 $1 - 第一个参数并将其传递给脚本内名为解密_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 并创建一个名为的解密文件 “解密.ABC.jpg”

© www.soinside.com 2019 - 2024. All rights reserved.