Linux从键盘输入任意值给变量var, (1)写出实现“在变量var中查找“ok”字符“的命令;然后执行命令:echo “find ok”,两条命令没有因果关系,但要求命令写在同一行;(2)命令同上,但要求前面命令执行成功才能执行执行命令:echo “find ok”;(3)命令同上,但要求第一条命令执行不成功才能执行命令:echo “find ok”
时间: 2023-06-06 14:06:17 浏览: 181
答案如下:
1. 终端输入:read var && echo "$var" | grep "ok" ; echo "find ok"
2. 终端输入:read var && echo "$var" | grep "ok" && echo "find ok"
3. 终端输入:read var && ! echo "$var" | grep "ok" && echo "find ok"
相关问题
linux 环境变量的值
Linux 环境变量的值可以是任意的字符串或文本。环境变量是一些特殊的变量,它们存储在操作系统中,并被用来控制各种程序的行为。在 Linux 中,环境变量通常由用户在 shell 中设置,并被传递给所有的子进程。
例如,`PATH` 环境变量存储了操作系统用来搜索可执行文件的路径列表,它的值是一个由路径组成的字符串,路径之间用冒号分隔。另一个例子是 `HOME` 环境变量,它存储了当前用户的主目录路径。
可以使用 `echo` 命令查看环境变量的值。例如,要查看 `PATH` 环境变量的值,可以在 shell 中执行以下命令:
```
echo $PATH
```
该命令会输出 `PATH` 环境变量的值。类似地,要查看 `HOME` 环境变量的值,可以执行以下命令:
```
echo $HOME
```
需要注意的是,环境变量的值可以包含空格和其他特殊字符。如果环境变量的值包含空格或其他特殊字符,可以将其用引号括起来,例如:
```
MY_VAR="this is a value with spaces"
echo $MY_VAR
```
该命令会输出 `this is a value with spaces`。
一个表达式和一棵二叉树之间,存在着自然的对应关系。写一个程序,实现基于表达式树表示的算术表达式的操作。 【任务要求】 假设算术表达式内可以含有变量(a~z)、常量(0~9)和二元运算符(+,-,*,/,^(乘幂))。实现以下操作: (1) ReadExpre()—以字符序列的形式输入语法正确的后缀表达式并构造表达式树。 (2) WriteExpre()—用带括弧的中缀表达式输出表达式E。 (3) Assign()—对表达式中的变量赋值。 (4) Value()—对算术表达式E求值。 【测试数据】 (1) 任意合法后缀表达式。 (2) 每当输入一个表达式后,对其中的变量赋值,然后对表达式求值。
这是一个较为复杂的程序,需要涉及到表达式树的构建、中序遍历输出、变量赋值和表达式求值。下面给出一个示例代码,供参考:
```python
class ExpressionTree:
def __init__(self, value, left=None, right=None):
self.value = value
self.left = left
self.right = right
def is_leaf(self):
return self.left is None and self.right is None
def read_expre(postfix):
stack = []
for token in postfix:
if token.isnumeric():
stack.append(ExpressionTree(int(token)))
elif token.isalpha():
stack.append(ExpressionTree(token))
else:
right = stack.pop()
left = stack.pop()
stack.append(ExpressionTree(token, left, right))
return stack.pop()
def write_expre(root):
if root.is_leaf():
return str(root.value)
else:
left = write_expre(root.left)
right = write_expre(root.right)
return "({} {} {})".format(left, root.value, right)
def assign(root, var_dict):
if root.is_leaf():
if isinstance(root.value, str) and root.value.isalpha():
root.value = var_dict.get(root.value, 0)
else:
assign(root.left, var_dict)
assign(root.right, var_dict)
def value(root):
if root.is_leaf():
return root.value
else:
left_val = value(root.left)
right_val = value(root.right)
if root.value == "+":
return left_val + right_val
elif root.value == "-":
return left_val - right_val
elif root.value == "*":
return left_val * right_val
elif root.value == "/":
return left_val / right_val
elif root.value == "^":
return left_val ** right_val
```
其中,`ExpressionTree`是表达式树的节点类,包含了节点的值和左右子树。`read_expre`方法接收一个后缀表达式字符串,返回一个表达式树的根节点。`write_expre`方法接收一个表达式树的根节点,返回一个中缀表达式字符串(带括号)。`assign`方法接收一个表达式树的根节点和一个变量字典,将表达式树中的变量节点的值替换为字典中对应的值。`value`方法接收一个表达式树的根节点,返回表达式的值。
下面给出一些测试代码,供参考:
```python
# 构造表达式树
postfix = "ab+c*"
root = read_expre(postfix)
# 输出中缀表达式
infix = write_expre(root)
print(infix) # (a + (b * c))
# 变量赋值
var_dict = {"a": 2, "b": 3, "c": 4}
assign(root, var_dict)
# 表达式求值
result = value(root)
print(result) # 14
```
这段代码可以处理简单的后缀表达式,但是对于复杂的表达式可能无法正确求值。如果需要支持更多的运算符和函数,需要对程序进行进一步扩展。
阅读全文