【问题标题】:Bash pass argument to --init-file scriptBash 将参数传递给 --init-file 脚本
【发布时间】:2021-08-03 04:09:26
【问题描述】:

我正在使用bash --init-file script.sh 运行一个shell 脚本,它运行一些命令,然后打开一个交互式会话。如何从运行初始 bash 命令的进程将参数传递给该初始化文件? bash --init-file 'script.sh arg' 不起作用。

有趣的是,如果脚本包含echo "$# $*",像我在上面所做的那样传递一个参数会导致它什么都不打印,而不传递一个参数会打印“0”。

【问题讨论】:

  • 我希望 arg 来自使用 --init 文件运行 bash 的命令。为清晰起见进行了编辑。

标签: bash command-line-arguments


【解决方案1】:

创建一个包含内容的文件:

#!/bin/bash
script.sh arg

将该文件传递给 bash:bash --init-file thatfile

我希望 arg 来自使用 bash 运行的命令

从命令行创建一个文件并传递它:

arg="$1"
cat >thatfile <<EOF
$(declare -p arg)
script.sh \"\$arg\"
EOF
bash --init-file thatfile

您可能有兴趣研究什么是 bash 中的进程替换

【讨论】:

  • 谢谢。我什至没有想到使用临时文件。我知道进程替换是什么,但我认为这行不通,因为此脚本用于运行容器
猜你喜欢
  • 2021-11-18
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 2012-01-23
相关资源
最近更新 更多