bash反报价反报价

时间:2017-10-13 09:12:03

标签: bash shell

我想在这里做回声:

    if [ $1 ]
then
    temp=`sudo fuser $1/tcp 2> /dev/null | tr -s ' ' | cut -d ' ' -f 2`
    echo 'The command '`cat /proc/$temp/cmdline`' use the port '$1
else
    echo "Give a port number"
fi

在这样的一行:

if [ $1 ]
then

    echo 'The command '`cat /proc/`sudo fuser $1/tcp 2> /dev/null | tr -s ' ' | cut -d ' ' -f 2`/cmdline`' use the port '$1
else
    echo "Give a port number"
fi

但是shell解释了

`cat /proc/`

作为命令(这是正常的,我知道)

我只想知道我是否可以在一行中没有临时变量

编辑:现在我有了这个

#!/bin/bash
RED='\033[0;33m'
NC='\033[0m'

#H
echo -e ${RED}'usePort.sh'${NC}
if [ $1 ]
then
    echo "The command $(cat /proc/$(sudo fuser $1/tcp 2> /dev/null | tr -s ' ' | cut -d ' ' -f 2)/cmdline) use the port $1"
else
    echo "Give a port number"
fi

输出是这样的: $ ./usePort.sh 22 usePort.sh ./usePort.sh: line 9: warning: command substitution: ignored null byte in input la commande /usr/sbin/sshd-D utilise le port 22

1 个答案:

答案 0 :(得分:0)

#!/usr/bin/env bash

if [  -z "$1" ]; then
    echo "your commands"
    temp=$(sudo fuser "$1/tcp" 2> /dev/null | tr -s ' ' | cut -d ' ' -f 2)
else
    echo "Give a port number"
fi

避免使用宽限`,而是使用var=$( your_commands )