如何在shell脚本函数中定义var

时间:2012-06-11 08:10:29

标签: linux bash shell

我目前正在使用以下功能

!/bin/bash

#Colour change functions

fnHotlinkG2R()
{
        sed -i 's/#hotlink {height: 200px;width: 200px;background: green;/#hotlink {height: 200px;width: 200px;background: red;/' /var/www/html/style.css
}

我不想创建多个差异函数,而是每次从脚本中调用函数时,我都想输入#hotlink

我对sh脚本相当新,并希望得到一些帮助。

3 个答案:

答案 0 :(得分:2)

首先,第一行应该是哈希爆炸#!,然后是程序的路径,而不仅仅是!

在bash中,您不为该函数声明参数。你只需要参数(并检查它是否有效/非空)并使用它。在这种情况下,您可能希望通过$1从函数中获取第一个参数,并将#hotlink替换为它。

sed -i 's/'"$1"' {height: 200px; ...

在调用函数的部分中,您可以将其称为另一个命令,并且您将为该命令提供#hotlink参数。

fnHotlinkG2R '#hotlink'

答案 1 :(得分:0)

你可以像这样使用它:

#!/bin/bash

#Colour change functions

fnHotlinkG2R()
{
    $hotlinkOld = "$1";
    $hotlinkNew = "$2";
    sed -i "s/$hotlinkOld/$hotlinkNew/i" /var/www/html/style.css
}

And call it like this:

fnHotlinkG2R "#hotlink {height: 200px;width: 200px;background: green;"\
   "#hotlink {height: 200px;width: 200px;background: red;"

答案 2 :(得分:0)

首先,您的shebang错了。正确的是

#!/bin/bash

其次,在bash中使用“不同”类型的参数传递。

$0 expands to the name of the shell or shell-script
$1 is the first argument
$2 is the second argument and so on
$@ are all arguments

bash manual

中阅读更多内容

您可能也对bash-manual中的quoting-part感兴趣...