为子shell设置变量值的两种方法

Shell变量传递技巧
本文介绍了在Shell脚本中如何将变量传递给子shell的两种方法:通过export将变量变成环境变量,或者直接在命令行前为子shell设置变量值。此外,还展示了如何通过临时修改PATH变量来运行特定目录下的游戏。

为子shell设置变量值有两种方法:

一种很常见的方法是将变量export成环境变量,这样该变量就会被带到子shell中去了

echo 'echo x=$x' > /tmp/echox
chmod +x /tmp/echox
x=Hi
echo "x不是环境变量的情况下"
/tmp/echox
echo "x是环境变量的情况下"
export x
/tmp/echox

x不是环境变量的情况下
x=
x是环境变量的情况下
x=Hi

还有一种不太常见的方法是在一个shell脚本执行的命令行前直接赋值

echo 'echo x=$x' > /tmp/echox
chmod +x /tmp/echox
x=Hi /tmp/echox

x=Hi

第二种方法的语法乍看起来有点怪,不过却可以使我们在同一个文件中使用两种不同的机制来改变变量的值.

PATH=/usr/bin:/usr/sbin:/bin:/sbin
echo 'PATH=$PATH:/usr/games $*' >/tmp/games 
chmod +x /tmp/games

echo 你可以不改变PATH变量的值,直接用game脚本来运行一个游戏
/tmp/games fortune
echo PATH的值为:$PATH

echo 你也可以用 =. game= 来永久性地PATH变量的值,然后就可以运行游戏了
. /tmp/games
echo PATH的值为:$PATH
fortune

你可以不改变PATH变量的值,直接用game脚本来运行一个游戏
Knucklehead:  "Knock, knock"
Pee Wee:  "Who's there?"
Knucklehead:  "Little ol' lady."
Pee Wee:  "Liddle ol' lady who?"
Knucklehead:  "I didn't know you could yodel"
PATH的值为:/usr/bin:/usr/sbin:/bin:/sbin
你也可以用 =. game= 来永久性地PATH变量的值,然后就可以运行游戏了
PATH的值为:/usr/bin:/usr/sbin:/bin:/sbin:/usr/games
Hain't we got all the fools in town on our side?  And hain't that a big
enough majority in any town?
    -- Mark Twain, "Huckleberry Finn"
在 PyQt 中,为布局(sub layout)设置属性通常涉及对布局对象本身以及其中包含的控件进行操作。可以使用 `setContentsMargins` 和 `setSpacing` 等方法来调整布局的外观和控件之间的间距。 以下是一个示例,展示如何为布局设置属性: ```python from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton class MyWindow(QWidget): def __init__(self): super().__init__() # 主布局 main_layout = QVBoxLayout() # 布局1 - 水平布局 sub_layout1 = QHBoxLayout() sub_layout1.setContentsMargins(10, 10, 10, 10) # 设置边距 sub_layout1.setSpacing(20) # 设置控件之间的间距 button1 = QPushButton("Button 1") button2 = QPushButton("Button 2") sub_layout1.addWidget(button1) sub_layout1.addWidget(button2) # 布局2 - 水平布局 sub_layout2 = QHBoxLayout() sub_layout2.setContentsMargins(5, 5, 5, 5) sub_layout2.setSpacing(10) button3 = QPushButton("Button 3") button4 = QPushButton("Button 4") sub_layout2.addWidget(button3) sub_layout2.addWidget(button4) # 将布局添加到主布局中 main_layout.addLayout(sub_layout1) main_layout.addLayout(sub_layout2) self.setLayout(main_layout) self.setWindowTitle("Sub Layout Properties Example") if __name__ == "__main__": app = QApplication([]) window = MyWindow() window.show() app.exec_() ``` 在这个示例中,创建了两个水平布局 `sub_layout1` 和 `sub_layout2`,并分别设置了它们的边距和控件间距。然后将这些布局添加到主垂直布局中。通过这种方式,可以灵活地控制每个布局的外观[^1]。 ### 相关问题 1. 如何在 PyQt 中动态修改布局的属性? 2. PyQt 中有哪些常用的布局管理器及其用途? 3. 如何在 PyQt 中嵌套多个布局以实现复杂的界面设计? 4. 如何在 PyQt 布局中添加、移除或替换控件? 5. 如何在 PyQt 中调整控件的大小策略和伸缩行为?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值