我希望有人可以解释一个现象.正如标题所示,我正在学习文件描述符的重定向.在此过程中,我遇到了一个关于重定向符号使用的问题,特别是在设置永久重定向时.我注意到在某些情况下,我是否使用<或似乎并不重要>.例如,使用以下脚本:
#!/bin/bash
#Setting file descriptor 3 to redirect to STDIN
exec 3<&0
#Setting STDIN to read from input file
exec 0<inputFile
while read var
do
echo "$var"
done
#Setting STDIN to read from file descriptor 3 which is redirected to the default STDIN
exec 0<&3
read -p "Enter a word:" word
echo "$word"
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,如果我使用>或<在陈述exec 3<&0或中,似乎并不重要exec 0<&3.在这些陈述中的任何一个中,似乎如果我换出重定向符号,我仍然得到完全相同的结果.对我来说,对行进行相同类型的更改似乎很明显:
exec 0<inputFile
Run Code Online (Sandbox Code Playgroud)
与
exec 0>inputFile
Run Code Online (Sandbox Code Playgroud)
不会产生相同的结果,因为将STDIN重定向到文件与将文件重定向到STDIN不同.
所以我的问题是:
<vs >:
# …Run Code Online (Sandbox Code Playgroud)我偶然发现了这个,我找不到足够的答案:
x = ""
Run Code Online (Sandbox Code Playgroud)
那么为什么是:
x == True
False
x == False
False
x != True
True
x != False
True
Run Code Online (Sandbox Code Playgroud)
我是否应该得出结论x既不是也不True是False?
我希望有人不介意解释这里发生了什么.我试图运行一个已经确认使用python 2.7工作的python单元测试.但是,当试图在运行python 2.6的机器上运行相同的测试时,我收到一个我无法弄清楚的错误.这是一个正在发生的事情的例子
import re, string, os, subprocess, unittest
import MERCH_FUNCTIONS
class merchTests(unittest.TestCase):
@classmethod
def setUpClass(self):
self._merchFileString=open("test_file.txt",'r').read()
self._merchFileList=self._merchFileString.split("\n") #convert string to list
def test_stuff(self):
#print list
print(self._merchFileList)
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
出于某种原因,如果我使用python 2.7运行此代码,它会成功运行测试,并打印出self._merchFileList列表.
但是,当使用python 2.6运行相同的代码时,我收到以下错误:
======================================================================
ERROR: test_stuff (__main__.merchTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "MERCH_Test_Case.py", line 14, in test_stuff
print(self._merchFileList)
AttributeError: 'merchTests' object has no attribute '_merchFileList'
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (errors=1)
Run Code Online (Sandbox Code Playgroud)
我不能为我的生活弄清楚这里发生了什么.我尝试了几个不同的事情但没有成功.如果有人愿意解释这里出了什么问题,我将非常感激.
先感谢您.
python ×2
bash ×1
boolean ×1
python-2.6 ×1
python-2.7 ×1
redirect ×1
string ×1
unit-testing ×1