linux 运行命令行参数,如何让命令行参数传递给unix/linux系统上正在运行的进程?...

在Linux上,使用bash,输出为带引号的参数,以便您可以编辑该命令并重新运行它

bash -c 'printf "%q " "${1}"' /dev/null; echo在Solaris上,使用bash(经过3.2.51(1)测试),并且没有gnu userland:

IFS=$'\002' tmpargs=( $( pargs "${pid}" \

| /usr/bin/sed -n 's/^argv\[[0-9]\{1,\}\]: //gp' \

| tr '\n' '\002' ) )

for tmparg in "${tmpargs[@]}"; do

printf "%q " "$( echo -e "${tmparg}" )"

done; echoLinux bash示例(在终端中粘贴):

{

## setup intial args

argv=( /bin/bash -c '{ /usr/bin/sleep 10; echo; }' /dev/null 'BEGIN {system("sleep 2")}' "this is" \

"some" "args "$'\n'" that" $'\000' $'\002' "need" "quot"$'\t'"ing" )

## run in background

"${argv[@]}" &

## recover into eval string that assigns it to argv_recovered

eval_me=$(

printf "argv_recovered=( "

bash -c 'printf "%q " "${1}"' /dev/null

printf " )\n"

)

## do eval

eval "${eval_me}"

## verify match

if [ "$( declare -p argv )" == "$( declare -p argv_recovered | sed 's/argv_recovered/argv/' )" ];

then

echo MATCH

else

echo NO MATCH

fi

}输出:

MATCHSolaris Bash示例:

{

## setup intial args

argv=( /bin/bash -c '{ /usr/bin/sleep 10; echo; }' /dev/null 'BEGIN {system("sleep 2")}' "this is" \

"some" "args "$'\n'" that" $'\000' $'\002' "need" "quot"$'\t'"ing" )

## run in background

"${argv[@]}" &

pargs "${!}"

ps -fp "${!}"

declare -p tmpargs

eval_me=$(

printf "argv_recovered=( "

IFS=$'\002' tmpargs=( $( pargs "${!}" \

| /usr/bin/sed -n 's/^argv\[[0-9]\{1,\}\]: //gp' \

| tr '\n' '\002' ) )

for tmparg in "${tmpargs[@]}"; do

printf "%q " "$( echo -e "${tmparg}" )"

done; echo

printf " )\n"

)

## do eval

eval "${eval_me}"

## verify match

if [ "$( declare -p argv )" == "$( declare -p argv_recovered | sed 's/argv_recovered/argv/' )" ];

then

echo MATCH

else

echo NO MATCH

fi

}输出:

MATCH

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值